<?php
class FormaPagto extends UDEntity {
	
	protected $cod_forma_auto;
	protected $desc_forma_pagto;

	public function __construct($id = ''){
		parent::__construct();

		$this->cod_forma_auto 	= '';
		$this->desc_forma_pagto	= '';

		if(!empty($id)){
			$this->carregar($id);
		}
	}

	//
	// Métodos próprios
	//
	public function hasID(){
		return !empty($this->cod_forma_auto) && $this->cod_forma_auto > 0;
	}

	//
	// Implementação métodos abstratos
	//

	public function carregar($id){
		$this->CI->db->where('cod_forma_auto', $id);
		$query = $this->CI->db->get('forma_pagto');

		if($query && $query->num_rows() == 1){
			foreach ($query->result() as $tam) {
				$this->cod_forma_auto 	= $tam->cod_forma_auto;
				$this->desc_forma_pagto = $tam->desc_forma_pagto;
			}
		}
	}

	public function gravar(){
		$validacao = $this->validar();
		
		if ($validacao[0]){
			if($this->hasID()){
				//Update
				$data = array(
					'desc_forma_pagto' => $this->getDescFormaPagto()
					);

				$this->CI->db->where('cod_forma_auto', $this->cod_forma_auto);
				$this->CI->db->update('forma_pagto', $data);
			}else{
				//Insert
				$data = array(
					'desc_forma_pagto' => $this->getDescFormaPagto()
					);

				$query = $this->CI->db->insert('forma_pagto', $data);
				$this->cod_forma_auto = $this->CI->db->insert_id();
			}			
		}

		return $validacao;
	}

	public function validar(){
		$validacao = array(true,'');

		if($this->hasID()){
			//update
			if(empty($this->desc_forma_pagto)){
				$validacao = array(false, 'Informe a descrição');
			}else{
				$this->CI->db->from('forma_pagto');
				$this->CI->db->where('desc_forma_pagto', $this->getDescFormaPagto());
				$this->CI->db->where('cod_forma_auto !=', $this->cod_forma_auto);

				if($this->CI->db->count_all_results() > 0){
					$validacao = array(false, 'Forma de pagamento ' . $this->getDescFormaPagto() . ' já cadastrada.');
				}	
			}
		}else{
			//insert
			if(empty($this->desc_forma_pagto)){
				$validacao = array(false, 'Informe a descrição.');
			}else{
				$this->CI->db->from('forma_pagto');
				$this->CI->db->where('desc_forma_pagto', $this->getDescFormaPagto());

				if($this->CI->db->count_all_results() > 0){
					$validacao = array(false, 'Forma de pagamento ' . $this->getDescFormaPagto() . ' já cadastrada.');
				}	
			}
		}

		return $validacao;
	}	


	//
	// Getters e Setters
	//

	public function getCodFormaAuto(){
		return $this->cod_forma_auto;
	}

	public function setDescFormaPagto($desc){
		$this->desc_forma_pagto = $desc;
	}

	public function getDescFormaPagto(){
		return $this->desc_forma_pagto;
	}
}